//这里通过 ES6 的模块导入语法引入了一个名为 request 的请求工具，用于发起 HTTP 请求。
import request from "@/utils/request";

//AUTH_BASE_URL 是用来存储 API 的基础 URL，通常是后端提供的接口根路径。
const AUTH_BASE_URL = "/api/User";


// AuthAPI 类包含了三个静态方法：login、logout 和 getCaptcha，分别用于登录、注销和获取验证码的 API 请求。
class AuthAPI {
  /** 登录 接口*/
  // login 方法
// login 方法用于用户登录。
// 创建了一个 FormData 对象 formData，并通过 formData.append 方法添加了 username 和 password 字段。
// 使用 request 工具发起 POST 请求，请求的 URL 是 ${AUTH_BASE_URL}/login，即 /api/login。
// 请求数据 data 是 formData 对象，指定请求头 headers 的 Content-Type 为 multipart/form-data，适用于上传文件或表单数据。
// 返回的 Promise 中期望得到的数据类型是 LoginResult。
  static login(data: LoginData) {
    // console.log(data)
    // const formData = new FormData();
    // formData.append("UserName", data.UserName);
    // formData.append("PassWord", data.PassWord);
    // //验证码
    // // formData.append("captchaKey", data.captchaKey);
    // // formData.append("captchaCode", data.captchaCode);
    // return request<any, LoginResult>({
    //   url: `${AUTH_BASE_URL}/Login`,
    //   method: "get",
    //   data: {
    //     UserName: data.UserName,
    //     PassWord: data.PassWord,
    //   },
    //   // headers: {
    //   //   "Content-Type": "multipart/form-data",
    //   // },
    // });
    return request.get(`${AUTH_BASE_URL}/Login`, {
      params: {
        UserName: data.UserName,
        PassWord: data.PassWord,
        code:data.captchaCode
      }
    })
  }
// logout 方法
// logout 方法用于用户注销。
// 使用 request 工具发起 DELETE 请求，请求的 URL 是 ${AUTH_BASE_URL}/logout，即 /api/logout。
  /** 注销 接口*/
  static logout() {
    return request({
      url: `${AUTH_BASE_URL}/Logout`,
      method: "delete",
    });
  }
// getCaptcha 方法
// getCaptcha 方法用于获取验证码。
// 使用 request 工具发起 GET 请求，请求的 URL 是 ${AUTH_BASE_URL}/captcha，即 /api/captcha。
// 返回的 Promise 中期望得到的数据类型是 CaptchaResult。
  /** 获取验证码 接口*/
  static getCaptcha() {
    return request<any, CaptchaResult>({
       url: `${AUTH_BASE_URL}/Captcha`,
       method: "get",
     });
   }
}
//通过 export default AuthAPI; 导出 AuthAPI 类，使其可以在其他模块中导入和使用。
export default AuthAPI;

/** 登录请求参数 */
export interface LoginData {
  /** 用户名 */
  UserName: string;
  /** 密码 */
  PassWord: string;
  // /** 验证码缓存key */
  // captchaKey: string;
  // /** 验证码 */
   captchaCode: string;
}

/** 登录响应 */
export interface LoginResult {
  /** 访问token */
  accessToken?: string;
  /** 过期时间(单位：毫秒) */
  expires?: number;
  /** 刷新token */
  refreshToken?: string;
  /** token 类型 */
  tokenType?: string;
}

/** 验证码响应 */
export interface CaptchaResult {
  /** 验证码缓存key */
  captchaKey: string;
  /** 验证码图片Base64字符串 */
  captchaBase64: string;
}
